import {
    PayableOverrides,
    BigNumber ,
    BigNumberish,
    Overrides,
    CallOverrides,
    BytesLike
} from 'ethers';

export interface IArrtibuteClient {
    
    getArtist(overrides?: CallOverrides): Promise<string>;

    getArtwork_image_uri(overrides?: CallOverrides): Promise<string>;

    getArtwork_metadata_uri(overrides?: CallOverrides): Promise<string>;

    getArtwork_name(overrides?: CallOverrides): Promise<string>;

    getCurrentIssue(overrides?: CallOverrides): Promise<BigNumber>;

    getNextTokenId(overrides?: CallOverrides): Promise<BigNumber>;

    getTotalIssue(overrides?: CallOverrides): Promise<BigNumber>;

    get_AssertIndex(overrides?: CallOverrides): Promise<BigNumber>;

    get_trait_type(overrides?: CallOverrides): Promise<number>;

    name(overrides?: CallOverrides): Promise<string>;

    owner(overrides?: CallOverrides): Promise<string>;

    safeMint(
    to: string,
    overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<any>;

    // "safeTransferFrom(address,address,uint256)"(
    // from: string,
    // to: string,
    // tokenId: BigNumberish,
    // overrides?: Overrides & { from?: string | Promise<string> }
    // ): Promise<any>;

    // "safeTransferFrom(address,address,uint256,bytes)"(
    // from: string,
    // to: string,
    // tokenId: BigNumberish,
    // _data: BytesLike,
    // overrides?: Overrides & { from?: string | Promise<string> }
    // ): Promise<any>;

    setTokenURI(
    tokenId: BigNumberish,
    uri: string,
    overrides?: Overrides & { from?: string | Promise<string> }
    ): Promise<any>;

    supportsInterface(
    interfaceId: BytesLike,
    overrides?: CallOverrides
    ): Promise<boolean>;

    symbol(overrides?: CallOverrides): Promise<string>;

    tokenIdExist(
    tokenid: BigNumberish,
    overrides?: CallOverrides
    ): Promise<boolean>;


    // lockToken(
    //     tokenId: BigNumberish,
    //     caller: string,
    //     overrides?: Overrides & { from?: string | Promise<string> }
    //     ): Promise<any>;
    

    //   unlockToken(
    //     tokenId: BigNumberish,
    //     caller: string,
    //     overrides?: Overrides & { from?: string | Promise<string> }
    //   ): Promise<any>;
}